iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 22
7
AI & Data

深入淺出搜尋引擎和自然語言處理系列 第 22

Day 22: 原來語言翻譯有四種程度?關於機器翻譯

  • 分享至 

  • xImage
  •  

雖然在現代,機器翻譯是個常見的功能(Google翻譯、Bing、...等),但事實上機器翻譯至今仍是個AI-hard的挑戰。

https://ithelp.ithome.com.tw/upload/images/20190923/20118683uk3qFclEj7.png

根據Vaquios三角形,翻譯被分為四個等級:(1) 字對字直接翻譯、(2) 句法對句法翻譯、(3) 意思對意思翻譯、以及(4) 知識性翻譯。和人類翻譯相似,初學英文時,我們也常記「這個英文字是中文裡的什麼字」;開始學文法之後,開始能夠照著另一種語言的文法來翻譯自己的想法。後來才有人告訴我們,厲害的人在翻譯中英文的文章時,是讀了一遍之後,不單純考慮文字和文法,而是把文中的意境也列入考量,那就大概是第三層,意思對意思翻譯。歐語系的語文考試(A1→C2)到了C以上的層級時,連該國家的文化背景、地理、歷史都被列入考點,那就比較像是第四層,知識性翻譯。

機器翻譯這個仍在發展的領域目前幾乎都還在第一層,字對字翻譯。機器翻譯主要有word-based、phrase-based和Neural Encoder-Decoder三種處理方式。

Word-based的做法使用字對字比對,根據貝氏定理來算出一句話從一種語言翻譯到另一種語言機率最高的方法。

https://ithelp.ithome.com.tw/upload/images/20190923/20118683K31xbf2H2j.png

假設我們要將法文翻譯成英文。首先我們建構英文的語言模型P(e),接著我們也建立一個翻譯用的encoder channel。當一句法文語句進到翻譯系統中時,我們能夠取得最有可能的翻譯結果。

https://ithelp.ithome.com.tw/upload/images/20190923/20118683nDHVck1fyZ.png
https://ithelp.ithome.com.tw/upload/images/20190923/20118683znEUWDygVa.png

我們來寫一個簡易版的語音翻譯機。我們會使用三個套件:

我們使用的順序非常直觀:讓電腦聽到我們說的話 -> 將人類語言轉換成文字 -> 文字翻譯 -> 將翻譯後的文字轉換成語音播放。 注意:

  • 開發的背景是Mac的OSX,我的pyttsx3是使用apple的語音,Windows或Linux的使用者可以參考網路上的資料來變換語音。
  • 簡易版開發為英翻中。
from googletrans import Translator
import speech_recognition as sr
import pyttsx3

# 初始化翻譯器
translator = Translator()

# 初始化語音辨識
r = sr.Recognizer()

# 初始化文字轉語音
engine = pyttsx3.init()
engine.setProperty('voice', 'com.apple.speech.synthesis.voice.ting-ting')


with sr.Microphone() as source:
    print("Please speak:")
    audio = r.listen(source)
    
    try:
        sentence = r.recognize_google(audio) # 這裡我們使用Google訓練好的語音辨識,Speech Recognition套件中也有其他模型可以用
        print("You said: {}".format(sentence))
    except:
        print("Sorry, can't recognize.")
        
if translator.translate(sentence).src == 'en':
    translated_sent = translator.translate(sentence, dest='zh-CN').text
    print("Which means {} in Chinese.".format(translator.translate(sentence, dest='zh-TW').text))
    engine.say(translated_sent)
    engine.runAndWait()
else:
    print("This doesn't sound like English")

https://ithelp.ithome.com.tw/upload/images/20190923/20118683nviw5Aulig.png

今天的ipynb在這裡


上一篇
Day 21: 讓電腦讀懂人類的提問!關於問答系統
下一篇
Day 23: 語言是有跡可循的!關於語言模型
系列文
深入淺出搜尋引擎和自然語言處理30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言